package com.jdd.enterprise.util;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
import java.util.regex.Pattern;
/**
 * @Brief 字符串工具类
 * @Author chenyl
 * @Date 2023-08-01
 * @Version 1.0.0
 */
public class StringUtil extends StringUtils {
    /**
     * 判断数据为空
     *
     * @param str 字符串
     * @return
     */
    public static boolean isEmpty(@Nullable Object str) {
        return str == null || "".equals(str);
    }
    /**
     * 判断数据不为空
     *
     * @param str 字符串
     * @return
     */
    public static boolean isNotEmpty(@Nullable Object str) {
        return !isEmpty(str);
    }
    /**
     * 获取字符串中的第一个大写字母
     *
     * @param str 字符串
     * @return 下标
     */
    public static int firstIndexOfUpperCase(String str) {
        if (isEmpty(str)) {
            throw new NullPointerException("the String is null");
        }
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (Character.isUpperCase(chars[i])) {
                return i;
            }
        }
        return -1;
    }
    /**
     * 获取字符串中的最后一个大写字母
     *
     * @param str 字符串
     * @return 下标
     */
    public static int lastIndexOfUpperCase(String str) {
        if (isEmpty(str)) {
            throw new NullPointerException("the String is null");
        }
        char[] chars = str.toCharArray();
        for (int i = chars.length - 1; i >= 0; i--) {
            if (Character.isUpperCase(chars[i])) {
                return i;
            }
        }
        return -1;
    }
    /**
     * 正则验证
     *
     * @param rex 正则表达式
     * @param str 数据字符串
     * @return
     */
    public static boolean matcher(Pattern rex, String str) {
        return !StringUtil.isEmpty(str) && rex.matcher(str).matches();
    }
}
